1
选择合适的数据类型
10 分
要存储商品的价格(如 99.50 元),需要精确到分,应该用哪个数据类型?
2
PRIMARY KEY 的特点
10 分
关于主键(PRIMARY KEY),以下哪个说法是正确的?
3
外键的作用
10 分
选课表 sc 的学号 sno 通过外键引用了学生表 s 的主键 sno。如果尝试在 sc 中插入一个学生表里不存在的学号,会发生什么?
4
综合判断(多选)
10 分
以下关于 MySQL 建表和约束的说法,哪些是正确的?(多选,全选对才得分)
5
补全 NOT NULL 约束
10 分
创建员工表 employee,要求姓名 ename 不能为空。请在横线处填入正确的关键字。
CREATE TABLE employee (
eid INT,
ename VARCHAR(50) ,
salary DECIMAL(10,2)
);
哪个关键字表示"这个字段不能留空"?
6
添加 UNIQUE 约束
10 分
用户表 users 中,邮箱 email 不能重复。请在横线处填入正确的约束关键字。
CREATE TABLE users (
uid INT PRIMARY KEY,
email VARCHAR(100) ,
name VARCHAR(50)
);
哪个约束保证"值不能重复"?
7
用 CHECK 限制取值范围
10 分
成绩 score 只允许 0~100 之间的值。请在横线处补全 CHECK 约束。
CREATE TABLE exam (
sid CHAR(10) NOT NULL,
score DECIMAL(5,2) ,
PRIMARY KEY (sid)
);
格式:CHECK(条件),比如 CHECK(age > 0)
三
编写 SQL 题(每题 10 分,共 30 分)
8
创建一张简单的学生表
10 分
学校需要一张学生信息表 student,包含以下字段:
· 学号 sno:定长字符 10 位,不能为空
· 姓名 sname:变长字符,最长 30
· 年龄 age:整数
请写出完整的 CREATE TABLE 语句(暂不需要设主键)。
格式:CREATE TABLE 表名 ( 字段名 数据类型 [约束], ... );
9
创建带主键的课程表
10 分
创建课程表 course,要求如下:
· 课程号 cno:CHAR(10),不能为空,设为主键
· 课程名 cname:VARCHAR(50),不能为空
· 学分 credit:INT
主键可以写在字段后面(列约束),也可以写在最后一行 PRIMARY KEY (cno)
10
创建带外键的选课表(综合)
10 分
已知学生表 s(主键 sno)和课程表 c(主键 cno)已存在。
请创建选课表 sc,要求如下:
· sno:CHAR(10),NOT NULL
· cno:CHAR(10),NOT NULL
· score:DECIMAL(5,2)
· sno 和 cno 组成联合主键
· sno 是引用 s 表的外键,cno 是引用 c 表的外键
联合主键:PRIMARY KEY (sno, cno)。外键:FOREIGN KEY (sno) REFERENCES s(sno)